导语:
本文主要介绍了关于python中怎么调用线程的相关知识,包括python 线程同步,以及python创建线程的方法这些编程知识,希望对大家有参考作用。
Python调用线程有两种情况,一种是在主线程中直接调用,另一种是在其他方法中直接调用线程
传递参数的方式有所不同。两种调用方式如下
1. 主进程中直接调用线程:
from threading import Thread
import time
def sayhi(name,input,number):
for i in range(1,10):
if number == "线程号1":
time.sleep(2)
print("这是线程号:%s - %s say hello %s - %s" % (number,name, str(i),input))
else :
time.sleep(1)
print("线程号:%s - %s say hello %s - %s 休息1秒" % (number,name, str(i),input))
if __name__ == '__main__':
for i in range(1,3):
t = Thread(target=sayhi, args=('mike','to you',"线程号"+str(i) ))
t.start()
print("主线程结束")
2.在方法中调用线程:
在方法中调用线程时,如果不想再写一个类,又不想使用self参数,
在写Thread(target=Th2, args=(input,))的时候,记得在args数字的最后加一个“逗号”,表示你传递的是一个数据元组
否则会报“takes 1 positional argument but 2 were given”之类的错误,因为传入参数个数的识别有问题
# -*- coding: utf-8 -*-
import time
from threading import Thread
def doWork(input):
global interval
try:
print("begin")
if "DERNAV" in input.upper():
t = Thread(target=Th1, args=(input,))
t.start()
elif "PBD9008" in input.upper():
t = Thread(target=Th2, args=(input,))
t.start()
except Exception as e :
print(e)
def Th1(input):
for i in range(1,10):
print(input+"_"+time.strftime('%Y.%m.%d %H:%M:%S'))
time.sleep(1)
def Th2(input):
for i in range(1,10):
print(input+"_"+time.strftime('%Y.%m.%d %H:%M:%S'))
time.sleep(2)
def run(interval):
while True:
try:
doWork("PBD9008")
doWork("DERNAV")
time_remaining = interval - time.time() % interval
time.sleep(time_remaining)
except Exception as e:
print(e)
if __name__ == '__main__':
global interval
interval = 300
text = run(interval)
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ mock在python中的断言用法11/29
- ♥ 一般用什么版本的python10/26
- ♥ python的json包在哪里以及如何使用01/13
- ♥ Python中如何根据日期判断星期几09/01
- ♥ 如何组织python输出字典08/16
- ♥ 如何在python中使用Leetcode算法?01/04
内容反馈