Python线程库:代码线性执行而不是并行执行

Posted

技术标签:

【中文标题】Python线程库:代码线性执行而不是并行执行【英文标题】:Python threading library: code executes linearly and not in parallel 【发布时间】:2021-10-16 16:21:21 【问题描述】:

我想并行运行两个线程(在 python3.6 上),适用于以下代码示例:

import threading
from time import sleep

# use Thread to run def in background
# Example:
def func1():
    while True:
        sleep(1)
        print("Working")

def func2():
    while True:
        sleep(2)
        print("Working2")


Thread(target = func1).start()
Thread(target = func2).start()

但它不适用于线程。线程:

import threading
from time import sleep
# use Thread to run def in background
# Example:
def func1():
    while True:
        sleep(1)
        print("Working")

def func2():
    while True:
        sleep(2)
        print("Working2")


x = threading.Thread(target=func1())
y = threading.Thread(target=func2())
x.start()
y.start()

我想使用后一个选项来检查 x 或 y 是否还活着。

【问题讨论】:

【参考方案1】:

Thread(target = func1)(第一个代码)和Thread(target=func1())(第二个代码)之间存在区别:

第一个将函数对象传递给Thread 第二个执行函数(因为你func1()调用它)并将它的返回值传递给Thread

由于您希望 线程 调用您的函数,因此不要调用它们:

x = threading.Thread(target=func1)
y = threading.Thread(target=func2)
x.start()
y.start()

【讨论】:

以上是关于Python线程库:代码线性执行而不是并行执行的主要内容,如果未能解决你的问题,请参考以下文章

在python(pika库)中并行运行代码

python面试题之多线程好吗?列举一些让Python代码以并行方式运行的方法

并行代码疑难解答

python并行执行2个py文件?

11.python并发入门(part1 初识进程与线程,并发,并行,同步,异步)

关于多线程提高程序执行速率的问题