例子一:(函数+多线程)
- #coding=utf-8
- import _thread #导入多线程模块
- from time import sleep #导入sleep()函数
- from datetime import datetime #导入datetime模块
- date_time_format = '%Y-%m-%d %H:%M:%S' #自定义时间的输出格式
- def date_time_str(date_time): #自定义转换时间格式的函数
- return datetime.strftime(date_time, date_time_format)
- def func1():
- print('+++线程一的开始时间:', date_time_str(datetime.now()))
- print('+++线程一休眠4秒')
- sleep(4)
- print('+++线程一的结束时间:', date_time_str(datetime.now()))
- def func2():
- print('***线程二的开始时间:', date_time_str(datetime.now()))
- print('***线程二休眠2秒')
- sleep(2)
- print('***线程二的结束时间:', date_time_str(datetime.now()))
- def func_main():
- print('——————进程的开始时间:', date_time_str(datetime.now()))
- print('——————所有线程的统一开始时间:', date_time_str(datetime.now()))
- _thread.start_new_thread(func1,()) #执行线程一
- _thread.start_new_thread(func2,()) #执行线程二
- sleep(3) #进程休眠3秒后继续执行
- print('——————进程的结束时间:', date_time_str(datetime.now()))
- print('——————所有线程的强制结束时间:', date_time_str(datetime.now()))
- if __name__ == '__main__':
- func_main()
复制代码
脚本运行的效果:
C:\Users\jacky\Desktop>python xx.py
——————进程的开始时间: 2019-02-16 11:02:52
——————所有线程的统一开始时间: 2019-02-16 11:02:52
+++线程一的开始时间: 2019-02-16 11:02:52
***线程二的开始时间: 2019-02-16 11:02:52
+++线程一休眠4秒
***线程二休眠2秒
***线程二的结束时间: 2019-02-16 11:02:54
——————进程的结束时间: 2019-02-16 11:02:55
——————所有线程的强制结束时间: 2019-02-16 11:02:55
C:\Users\jacky\Desktop>
## 备注:所有线程的开始时间都是一样的;所有线程都会在进程执行结束后,立即强制结束。
######
例子二:(函数+多线程)
- #coding=utf-8
- import _thread
- from time import sleep
- from datetime import datetime
- date_time_format = '%Y-%m-%d %H:%M:%S'
- def date_time_str(date_time):
- return datetime.strftime(date_time, date_time_format)
- def func1():
- print('+++线程一的开始时间:', date_time_str(datetime.now()))
- print('+++线程一休眠4秒')
- sleep(4)
- print('+++线程一的结束时间:', date_time_str(datetime.now()))
- def func2():
- print('***线程二的开始时间:', date_time_str(datetime.now()))
- print('***线程二休眠2秒')
- sleep(2)
- print('***线程二的结束时间:', date_time_str(datetime.now()))
- def func_main():
- print('——————进程的开始时间:', date_time_str(datetime.now()))
- print('——————所有线程的统一开始时间:', date_time_str(datetime.now()))
- _thread.start_new_thread(func1,()) #执行线程一
- _thread.start_new_thread(func2,()) #执行线程二
- sleep(4) #进程休眠4秒后继续执行
- print('——————进程的结束时间:', date_time_str(datetime.now()))
- print('——————所有线程的强制结束时间:', date_time_str(datetime.now()))
- if __name__ == '__main__':
- func_main()
复制代码
脚本运行的效果:
C:\Users\jacky\Desktop>python xx.py
——————进程的开始时间: 2019-02-16 11:07:35
——————所有线程的统一开始时间: 2019-02-16 11:07:35
+++线程一的开始时间: 2019-02-16 11:07:35
***线程二的开始时间: 2019-02-16 11:07:35
***线程二休眠2秒
+++线程一休眠4秒
***线程二的结束时间: 2019-02-16 11:07:37
+++线程一的结束时间: 2019-02-16 11:07:39
——————进程的结束时间: 2019-02-16 11:07:39
——————所有线程的强制结束时间: 2019-02-16 11:07:39
C:\Users\jacky\Desktop>
######
例子三:(函数+多线程)
- #coding=utf-8
- import _thread
- from time import sleep
- from datetime import datetime
- date_time_format = '%Y-%m-%d %H:%M:%S'
- def date_time_str(date_time):
- return datetime.strftime(date_time, date_time_format)
- def func1():
- print('+++线程一的开始时间:', date_time_str(datetime.now()))
- print('+++线程一休眠4秒')
- sleep(4)
- print('+++线程一的结束时间:', date_time_str(datetime.now()))
- def func2():
- print('***线程二的开始时间:', date_time_str(datetime.now()))
- print('***线程二休眠2秒')
- sleep(2)
- print('***线程二的结束时间:', date_time_str(datetime.now()))
- def func_main():
- print('——————进程的开始时间:', date_time_str(datetime.now()))
- print('——————所有线程的统一开始时间:', date_time_str(datetime.now()))
- _thread.start_new_thread(func1,()) #执行线程一
- _thread.start_new_thread(func2,()) #执行线程二
- sleep(5) #进程休眠5秒后继续执行
- print('——————进程的结束时间:', date_time_str(datetime.now()))
- print('——————所有线程的强制结束时间:', date_time_str(datetime.now()))
- if __name__ == '__main__':
- func_main()
复制代码
脚本运行的效果:
C:\Users\jacky\Desktop>python xx.py
——————进程的开始时间: 2019-02-16 11:09:37
——————所有线程的统一开始时间: 2019-02-16 11:09:37
+++线程一的开始时间: 2019-02-16 11:09:37
+++线程一休眠4秒
***线程二的开始时间: 2019-02-16 11:09:37
***线程二休眠2秒
***线程二的结束时间: 2019-02-16 11:09:39
+++线程一的结束时间: 2019-02-16 11:09:41
——————进程的结束时间: 2019-02-16 11:09:42
——————所有线程的强制结束时间: 2019-02-16 11:09:42
C:\Users\jacky\Desktop>
######
例子四:(函数+多线程+线程锁)
- #coding=utf-8
- import _thread
- from time import sleep
- from datetime import datetime
- date_time_format = '%Y-%m-%d %H:%M:%S'
- def date_time_str(date_time):
- return datetime.strftime(date_time, date_time_format)
- def func1(lock):
- print('线程1的开始时间:',date_time_str(datetime.now()), ',休眠(8)秒')
- sleep(8)
- print('线程1的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func2(lock):
- print('线程2的开始时间:',date_time_str(datetime.now()), ',休眠(2)秒')
- sleep(2)
- print('线程2的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func3(lock):
- print('线程3的开始时间:',date_time_str(datetime.now()), ',休眠(5)秒')
- sleep(5)
- print('线程3的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func_main():
- print(f"——————进程的开始时间: {date_time_str(datetime.now())}")
-
- fields_1 = range(0, 3) # "3" 意味着有3个线程,依此类推
- fields_2 = []
-
- for Key_1 in fields_1:
- Key_1 = _thread.allocate_lock()
- Key_1.acquire()
- fields_2.append(Key_1)
-
- # [0]、[1]、[2]代表线程号,依此类推;分别给每个函数的一个变量进行赋值
- _thread.start_new_thread(func1,(fields_2[0],))
- _thread.start_new_thread(func2,(fields_2[1],))
- _thread.start_new_thread(func3,(fields_2[2],))
-
- for i in fields_1:
- while fields_2[i].locked():
- pass
-
- print(f"——————进程的结束时间: {date_time_str(datetime.now())}")
- if __name__ == '__main__':
- func_main()
复制代码
脚本运行的效果:
C:\Users\jacky\Desktop>python xx.py
——————进程的开始时间: 2019-02-16 11:53:58
线程2的开始时间: 2019-02-16 11:53:58 ,休眠(2)秒
线程1的开始时间: 2019-02-16 11:53:58 ,休眠(8)秒
线程3的开始时间: 2019-02-16 11:53:58 ,休眠(5)秒
线程2的结束时间: 2019-02-16 11:54:00
线程3的结束时间: 2019-02-16 11:54:03
线程1的结束时间: 2019-02-16 11:54:06
——————进程的结束时间: 2019-02-16 11:54:06
C:\Users\jacky\Desktop>
## 备注:所有线程的开始时间都是一样的;使用线程锁时,进程会在所有线程都执行结束后,立即结束。
######
例子五:(函数+多线程+线程锁)
- #coding=utf-8
- import _thread
- from time import sleep
- from datetime import datetime
- date_time_format = '%Y-%m-%d %H:%M:%S'
- def date_time_str(date_time):
- return datetime.strftime(date_time, date_time_format)
- def func1(n_sec, lock):
- print('线程1的开始时间:',date_time_str(datetime.now()), ',休眠(', n_sec, ')秒')
- sleep(n_sec)
- print('线程1的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func2(n_sec, lock):
- print('线程2的开始时间:',date_time_str(datetime.now()), ',休眠(', n_sec, ')秒')
- sleep(n_sec)
- print('线程2的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func3(n_sec, lock):
- print('线程3的开始时间:',date_time_str(datetime.now()), ',休眠(', n_sec, ')秒')
- sleep(n_sec)
- print('线程3的结束时间:', date_time_str(datetime.now()))
- lock.release()
-
- def func4(n_sec, lock):
- print('线程4的开始时间:',date_time_str(datetime.now()), ',休眠(', n_sec, ')秒')
- sleep(n_sec)
- print('线程4的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func_main():
- print(f"——————进程的开始时间: {date_time_str(datetime.now())}")
-
- fields_1 = range(0, 4) # "4" 意味着有4个线程,依此类推
- fields_2 = []
-
- for Key_1 in fields_1:
- Key_1 = _thread.allocate_lock()
- Key_1.acquire()
- fields_2.append(Key_1)
-
- # [0]、[1]、[2]、[3]代表线程号,依此类推;分别给每个函数的两个变量进行赋值
- _thread.start_new_thread(func1,(8, fields_2[0]))
- _thread.start_new_thread(func2,(2, fields_2[1]))
- _thread.start_new_thread(func3,(5, fields_2[2]))
- _thread.start_new_thread(func4,(10, fields_2[3]))
-
- for i in fields_1:
- while fields_2[i].locked():
- pass
-
- print(f"——————进程的结束时间: {date_time_str(datetime.now())}")
- if __name__ == '__main__':
- func_main()
复制代码
脚本运行的效果:
C:\Users\jacky\Desktop>python xx.py
——————进程的开始时间: 2019-02-16 12:02:37
线程1的开始时间: 2019-02-16 12:02:37 ,休眠( 8 )秒
线程2的开始时间: 2019-02-16 12:02:37 ,休眠( 2 )秒
线程3的开始时间: 2019-02-16 12:02:37 ,休眠( 5 )秒
线程4的开始时间: 2019-02-16 12:02:37 ,休眠( 10 )秒
线程2的结束时间: 2019-02-16 12:02:39
线程3的结束时间: 2019-02-16 12:02:42
线程1的结束时间: 2019-02-16 12:02:45
线程4的结束时间: 2019-02-16 12:02:47
——————进程的结束时间: 2019-02-16 12:02:47
C:\Users\jacky\Desktop>
######
例子六:(类+多线程)
- #coding=utf-8
- import _thread
- from time import sleep
- from datetime import datetime
- date_time_format = '%Y-%m-%d %H:%M:%S'
- def date_time_str(date_time):
- return datetime.strftime(date_time, date_time_format)
- class class1():
- def func1(self):
- print('+++线程一的开始时间:', date_time_str(datetime.now()))
- print('+++线程一休眠4秒')
- sleep(4)
- print('+++线程一的结束时间:', date_time_str(datetime.now()))
- def func2(self):
- print('***线程二的开始时间:', date_time_str(datetime.now()))
- print('***线程二休眠2秒')
- sleep(2)
- print('***线程二的结束时间:', date_time_str(datetime.now()))
- def func_main(self):
- print('——————进程的开始时间:', date_time_str(datetime.now()))
- print('——————所有线程的统一开始时间:', date_time_str(datetime.now()))
- _thread.start_new_thread(self.func1,()) #执行线程一
- _thread.start_new_thread(self.func2,()) #执行线程二
- sleep(5) #进程休眠5秒后继续执行
- print('——————进程的结束时间:', date_time_str(datetime.now()))
- print('——————所有线程的强制结束时间:', date_time_str(datetime.now()))
- if __name__ == '__main__':
- myclass = class1()
- myclass.func_main()
复制代码
脚本运行的效果:
C:\Users\jacky\Desktop>python xx.py
——————进程的开始时间: 2019-02-17 21:31:29
——————所有线程的统一开始时间: 2019-02-17 21:31:29
+++线程一的开始时间: 2019-02-17 21:31:29
***线程二的开始时间: 2019-02-17 21:31:29
***线程二休眠2秒
+++线程一休眠4秒
***线程二的结束时间: 2019-02-17 21:31:31
+++线程一的结束时间: 2019-02-17 21:31:33
——————进程的结束时间: 2019-02-17 21:31:34
——————所有线程的强制结束时间: 2019-02-17 21:31:34
C:\Users\jacky\Desktop>
######
例子七:(类+多线程+线程锁)
- #coding=utf-8
- import _thread
- from time import sleep
- from datetime import datetime
- date_time_format = '%Y-%m-%d %H:%M:%S'
- def date_time_str(date_time):
- return datetime.strftime(date_time, date_time_format)
- class class1():
- def func1(self,lock):
- print('线程1的开始时间:',date_time_str(datetime.now()), ',休眠(8)秒')
- sleep(8)
- print('线程1的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func2(self,lock):
- print('线程2的开始时间:',date_time_str(datetime.now()), ',休眠(2)秒')
- sleep(2)
- print('线程2的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func3(self,lock):
- print('线程3的开始时间:',date_time_str(datetime.now()), ',休眠(5)秒')
- sleep(5)
- print('线程3的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func_main(self):
- print(f"——————进程的开始时间: {date_time_str(datetime.now())}")
-
- fields_1 = range(0, 3)
- fields_2 = []
-
- for Key_1 in fields_1:
- Key_1 = _thread.allocate_lock()
- Key_1.acquire()
- fields_2.append(Key_1)
-
- _thread.start_new_thread(self.func1,(fields_2[0],)) #给一个变量进行赋值
- _thread.start_new_thread(self.func2,(fields_2[1],))
- _thread.start_new_thread(self.func3,(fields_2[2],))
-
- for i in fields_1:
- while fields_2[i].locked():
- pass
-
- print(f"——————进程的结束时间: {date_time_str(datetime.now())}")
- if __name__ == '__main__':
- myclass = class1()
- myclass.func_main()
复制代码
脚本运行的效果:
C:\Users\jacky\Desktop>python xx.py
——————进程的开始时间: 2019-02-17 21:48:59
线程2的开始时间: 2019-02-17 21:48:59 ,休眠(2)秒
线程1的开始时间: 2019-02-17 21:48:59 ,休眠(8)秒
线程3的开始时间: 2019-02-17 21:48:59 ,休眠(5)秒
线程2的结束时间: 2019-02-17 21:49:01
线程3的结束时间: 2019-02-17 21:49:04
线程1的结束时间: 2019-02-17 21:49:07
——————进程的结束时间: 2019-02-17 21:49:07
C:\Users\jacky\Desktop>
######
例子八:(类+多线程+线程锁)
- #coding=utf-8
- import _thread
- from time import sleep
- from datetime import datetime
- date_time_format = '%Y-%m-%d %H:%M:%S'
- def date_time_str(date_time):
- return datetime.strftime(date_time, date_time_format)
- class class1():
- def func1(self,n_sec, lock):
- print('线程1的开始时间:',date_time_str(datetime.now()), ',休眠(', n_sec, ')秒')
- sleep(n_sec)
- print('线程1的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func2(self,n_sec, lock):
- print('线程2的开始时间:',date_time_str(datetime.now()), ',休眠(', n_sec, ')秒')
- sleep(n_sec)
- print('线程2的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func3(self,n_sec, lock):
- print('线程3的开始时间:',date_time_str(datetime.now()), ',休眠(', n_sec, ')秒')
- sleep(n_sec)
- print('线程3的结束时间:', date_time_str(datetime.now()))
- lock.release()
-
- def func4(self,n_sec, lock):
- print('线程4的开始时间:',date_time_str(datetime.now()), ',休眠(', n_sec, ')秒')
- sleep(n_sec)
- print('线程4的结束时间:', date_time_str(datetime.now()))
- lock.release()
- def func_main(self):
- print(f"——————进程的开始时间: {date_time_str(datetime.now())}")
-
- fields_1 = range(0, 4)
- fields_2 = []
-
- for Key_1 in fields_1:
- Key_1 = _thread.allocate_lock()
- Key_1.acquire()
- fields_2.append(Key_1)
-
- _thread.start_new_thread(self.func1,(8,fields_2[0])) #给两个变量进行赋值
- _thread.start_new_thread(self.func2,(2,fields_2[1]))
- _thread.start_new_thread(self.func3,(5,fields_2[2]))
- _thread.start_new_thread(self.func4,(10,fields_2[3]))
-
- for i in fields_1:
- while fields_2[i].locked():
- pass
-
- print(f"——————进程的结束时间: {date_time_str(datetime.now())}")
- if __name__ == '__main__':
- myclass = class1()
- myclass.func_main()
复制代码
脚本运行的效果:
C:\Users\jacky\Desktop>python xx.py
——————进程的开始时间: 2019-02-17 21:58:23
线程3的开始时间: 2019-02-17 21:58:23 ,休眠( 5 )秒
线程2的开始时间: 2019-02-17 21:58:23 ,休眠( 2 )秒
线程4的开始时间: 2019-02-17 21:58:23 ,休眠( 10 )秒
线程1的开始时间: 2019-02-17 21:58:23 ,休眠( 8 )秒
线程2的结束时间: 2019-02-17 21:58:25
线程3的结束时间: 2019-02-17 21:58:28
线程1的结束时间: 2019-02-17 21:58:31
线程4的结束时间: 2019-02-17 21:58:33
——————进程的结束时间: 2019-02-17 21:58:33
C:\Users\jacky\Desktop>
相关文章:
CentOS8使用多线程+Ping |