gpt4 book ai didi

Python线程未并行处理

转载 作者:太空狗 更新时间:2023-10-30 00:47:50 25 4
gpt4 key购买 nike

我是 python 的中级蜜蜂,想以并行模式运行少数几个相同的类实例,以获取金融市场的数据和决策。为了继续我的想法,我运行下面的代码来查看 python 是如何工作的,它似乎运行了一个完整的一级实例,在二级实例之后,我想并行运行这个,我怎么能......?下面是一些用于测试的示例代码..

import threading
import time

class thr(object):

def __init__(self, name):
self.name = name
self.x = 0

def run(self):
for i in list(range(10)):
self.x +=1
print("something {0} {1}".format(self.name, self.x))
time.sleep(1)

F = thr("First")
S = thr("Second")

threading.Thread(target=F.run())
threading.Thread(target=S.run())

结果如下....

something First 1
something First 2
something First 3
something First 4
something First 5
something First 6
something First 7
something First 8
something First 9
something First 10
something Second 1
something Second 2
something Second 3
something Second 4
something Second 5
something Second 6
something Second 7
something Second 8
something Second 9
something Second 10
Out[27]: <Thread(Thread-25, initial)>

最佳答案

问题出在这里:

threading.Thread(target=F.run())
threading.Thread(target=S.run())

target= 采用可调用对象或 NoneF.run() 立即执行 F.run,等待它完成,然后传递返回值(None 在您的 run() 方法中)作为目标。

你想要这样的东西:

t1 = threading.Thread(target=F.run)
t2 = threading.Thread(target=S.run)
t1.start()
t2.start()

注意 run 之后没有括号

这是包含建议更改的完整程序:

import threading
import time

class thr(object):

def __init__(self, name):
self.name = name
self.x = 0

def run(self):
for i in list(range(10)):
self.x +=1
print("something {0} {1}".format(self.name, self.x))
time.sleep(1)

F = thr("First")
S = thr("Second")

t1 = threading.Thread(target=F.run)
t2 = threading.Thread(target=S.run)
t1.start()
t2.start()

和输出(Python 3.6.1):

$ python sf.py
something First 1
something Second 1
something Second 2
something First 2
something Second 3
something First 3
something Second 4
something First 4
something Second 5
something First 5
something Second 6
something First 6
something Second 7
something First 7
something First 8
something Second 8
something First 9
something Second 9
something First 10
something Second 10

关于Python线程未并行处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45113867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com