相关疑难解决方法(0)

线程在调用Thread.start之前开始运行

t1=threading.Thread(target=self.read())
print "something"
t2=threading.Thread(target=self.runChecks(), args=(self))
Run Code Online (Sandbox Code Playgroud)

self.read无限期地运行,所以程序将无法到达该print行.没有打电话t1.start()怎么可能呢?(即使我打电话给它,它会开始运行并继续下一行,不应该吗?)

python multithreading python-multithreading

17
推荐指数
1
解决办法
3066
查看次数

Python顺序运行线程

我正在尝试在Python中运行代码并行.

我的用例如下:我有一个需要运行数千次的进程.但由于它依赖于下载,我需要小心我同时运行多少(每分钟我的请求数量有限).因此,我希望始终同时运行该功能10次,每次完成一次我想启动一个新的过程.

在快速阅读之后,线程模块似乎正是我正在寻找的.但是,一些小实验似乎表明Python不会在并行中运行线程.

当我运行以下代码时

import threading
import time

wait = 0.4

def f(x):
 for j in range(1,100):
    time.sleep(wait)
    print(x)


threading.Thread(target = f(1)).start()
threading.Thread(target = f(2)).start()
Run Code Online (Sandbox Code Playgroud)

我进入了命令行

1
1
1
1
1
Run Code Online (Sandbox Code Playgroud)

不会显示单个2,直到所有100个都打印出来.

这是怎么来的?理论上f(1)和f(2)应该同时运行吗?

python python-multithreading

1
推荐指数
1
解决办法
525
查看次数