这篇blog是非常有趣的,是的,他非常有趣
下面我将给大家介绍有关python中thread来实现布朗运动的一个例子
下面是运行效果:
===================================================
代码部分:
===================================================
1 # Brownian motion -- an example of a multi-threaded Tkinter program.
2
3 from tkinter import *
4 import random
5 import threading
6 import time
7 import sys
8
9 #画布大小
10 WIDTH = 400
11 HEIGHT = 300
12 SIGMA = 10
13 BUZZ = 2
14 RADIUS = 2
15 LAMBDA = 10
16 FILL = 'red'
17
18 stop = 0 # Set when main loop exits
19
20 def particle(canvas):
21 r = RADIUS
22 x = random.gauss(WIDTH/2.0, SIGMA)
23 y = random.gauss(HEIGHT/2.0, SIGMA)
24 p = canvas.create_oval(x-r, y-r, x+r, y+r, fill=FILL)
25 while not stop:
26 dx = random.gauss(0, BUZZ)
27 dy = random.gauss(0, BUZZ)
28 dt = random.expovariate(LAMBDA)
29 try:
30 canvas.move(p, dx, dy)
31 except TclError:
32 break
33 time.sleep(dt)
34
35 def main():
36 global stop
37 root = Tk()
38 canvas = Canvas(root, width=WIDTH, height=HEIGHT)
39 canvas.pack(fill='both', expand=1)
40 #粒子数目
41 np = 30
42 if sys.argv[1:]:
43 np = int(sys.argv[1])
44 for i in range(np):
45 t = threading.Thread(target=particle, args=(canvas,))
46 t.start()
47 try:
48 root.mainloop()
49 finally:
50 stop = 1
51
52 main()
更多资料:http://www.oschina.net/code/explore/Python-3.1.3/Demo/tkinter/guido/brownian.py
E | hongtenzone@foxmail.com B | http://www.cnblogs.com/hongten