Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
260cc1a8
Kaydet (Commit)
260cc1a8
authored
Agu 10, 1992
tarafından
Guido van Rossum
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
Initial revision
üst
814d7cd4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
198 additions
and
0 deletions
+198
-0
ChangeLog
Demo/sockets/ChangeLog
+9
-0
README
Demo/threads/README
+5
-0
telnet.py
Demo/threads/telnet.py
+110
-0
wpi.py
Demo/threads/wpi.py
+74
-0
No files found.
Demo/sockets/ChangeLog
0 → 100755
Dosyayı görüntüle @
260cc1a8
Mon Aug 10 12:45:43 1992 Guido van Rossum (guido@voorn.cwi.nl)
* README: added broadcast.py, ftp.py, radio.py
-------------------------------------------------------------------------------
^^^ Log entries after release of 0.9.6 ^^^
-------------------------------------------------------------------------------
Demo/threads/README
0 → 100644
Dosyayı görüntüle @
260cc1a8
This directory contains some demonstrations of the thread module.
They are mostly "proof of concept" type applications:
telnet.py Version of ../sockets/telnet.py using threads.
wpi.py Version of ../scripts/pi.py using threads and stdwin.
Demo/threads/telnet.py
0 → 100644
Dosyayı görüntüle @
260cc1a8
# Minimal interface to the Internet telnet protocol.
#
# *** modified to use threads ***
#
# It refuses all telnet options and does not recognize any of the other
# telnet commands, but can still be used to connect in line-by-line mode.
# It's also useful to play with a number of other services,
# like time, finger, smtp and even ftp.
#
# Usage: telnet host [port]
#
# The port may be a service name or a decimal port number;
# it defaults to 'telnet'.
import
sys
,
os
,
time
from
socket
import
*
import
thread
BUFSIZE
=
8
*
1024
# Telnet protocol characters
IAC
=
chr
(
255
)
# Interpret as command
DONT
=
chr
(
254
)
DO
=
chr
(
253
)
WONT
=
chr
(
252
)
WILL
=
chr
(
251
)
def
main
():
host
=
sys
.
argv
[
1
]
try
:
hostaddr
=
gethostbyname
(
host
)
except
error
:
sys
.
stderr
.
write
(
sys
.
argv
[
1
]
+
': bad host name
\n
'
)
sys
.
exit
(
2
)
#
if
len
(
sys
.
argv
)
>
2
:
servname
=
sys
.
argv
[
2
]
else
:
servname
=
'telnet'
#
if
'0'
<=
servname
[:
1
]
<=
'9'
:
port
=
eval
(
servname
)
else
:
try
:
port
=
getservbyname
(
servname
,
'tcp'
)
except
error
:
sys
.
stderr
.
write
(
servname
+
': bad tcp service name
\n
'
)
sys
.
exit
(
2
)
#
s
=
socket
(
AF_INET
,
SOCK_STREAM
)
#
try
:
s
.
connect
(
host
,
port
)
except
error
,
msg
:
sys
.
stderr
.
write
(
'connect failed: '
+
`msg`
+
'
\n
'
)
sys
.
exit
(
1
)
#
thread
.
start_new
(
child
,
(
s
,))
parent
(
s
)
def
parent
(
s
):
# read socket, write stdout
iac
=
0
# Interpret next char as command
opt
=
''
# Interpret next char as option
while
1
:
data
,
dummy
=
s
.
recvfrom
(
BUFSIZE
)
if
not
data
:
# EOF -- exit
sys
.
stderr
.
write
(
'(Closed by remote host)
\n
'
)
thread
.
exit_prog
(
1
)
cleandata
=
''
for
c
in
data
:
if
opt
:
print
ord
(
c
)
print
'(replying: '
+
`opt+c`
+
')'
s
.
send
(
opt
+
c
)
opt
=
''
elif
iac
:
iac
=
0
if
c
==
IAC
:
cleandata
=
cleandata
+
c
elif
c
in
(
DO
,
DONT
):
if
c
==
DO
:
print
'(DO)'
,
else
:
print
'(DONT)'
,
opt
=
IAC
+
WONT
elif
c
in
(
WILL
,
WONT
):
if
c
==
WILL
:
print
'(WILL)'
,
else
:
print
'(WONT)'
,
opt
=
IAC
+
DONT
else
:
print
'(command)'
,
ord
(
c
)
elif
c
==
IAC
:
iac
=
1
print
'(IAC)'
,
else
:
cleandata
=
cleandata
+
c
sys
.
stdout
.
write
(
cleandata
)
sys
.
stdout
.
flush
()
## print 'Out:', `cleandata`
def
child
(
s
):
# read stdin, write socket
while
1
:
line
=
sys
.
stdin
.
readline
()
## print 'Got:', `line`
s
.
send
(
line
)
main
()
Demo/threads/wpi.py
0 → 100644
Dosyayı görüntüle @
260cc1a8
# Display digits of pi in a window, calculating in a separate thread.
# Compare ../scripts/pi.py.
import
time
import
thread
import
stdwin
from
stdwinevents
import
*
digits
=
[]
def
worker
():
k
,
a
,
b
,
a1
,
b1
=
2
l
,
4
l
,
1
l
,
12
l
,
4
l
while
1
:
# Next approximation
p
,
q
,
k
=
k
*
k
,
2
l
*
k
+
1
l
,
k
+
1
l
a
,
b
,
a1
,
b1
=
a1
,
b1
,
p
*
a
+
q
*
a1
,
p
*
b
+
q
*
b1
# Print common digits
d
,
d1
=
a
/
b
,
a1
/
b1
#print a, b, a1, b1
while
d
==
d1
:
digits
.
append
(
`int(d)`
)
a
,
a1
=
10
l
*
(
a
%
b
),
10
l
*
(
a1
%
b1
)
d
,
d1
=
a
/
b
,
a1
/
b1
def
main
():
digits_seen
=
0
thread
.
start_new_thread
(
worker
,
())
tw
=
stdwin
.
textwidth
(
'0 '
)
lh
=
stdwin
.
lineheight
()
stdwin
.
setdefwinsize
(
20
*
tw
,
20
*
lh
)
win
=
stdwin
.
open
(
'digits of pi'
)
options
=
win
.
menucreate
(
'Options'
)
options
.
additem
(
'Auto scroll'
)
autoscroll
=
1
options
.
check
(
0
,
autoscroll
)
while
1
:
win
.
settimer
(
1
)
type
,
w
,
detail
=
stdwin
.
getevent
()
if
type
==
WE_CLOSE
:
thread
.
exit_prog
(
0
)
elif
type
==
WE_DRAW
:
(
left
,
top
),
(
right
,
bottom
)
=
detail
digits_seen
=
len
(
digits
)
d
=
win
.
begindrawing
()
for
i
in
range
(
digits_seen
):
h
=
(
i
%
20
)
*
tw
v
=
(
i
/
20
)
*
lh
if
top
-
lh
<
v
<
bottom
:
d
.
text
((
h
,
v
),
digits
[
i
])
d
.
close
()
elif
type
==
WE_TIMER
:
n
=
len
(
digits
)
if
n
>
digits_seen
:
win
.
settitle
(
`n`
+
' digits of pi'
)
d
=
win
.
begindrawing
()
for
i
in
range
(
digits_seen
,
n
):
h
=
(
i
%
20
)
*
tw
v
=
(
i
/
20
)
*
lh
d
.
text
((
h
,
v
),
digits
[
i
])
d
.
close
()
digits_seen
=
n
height
=
(
v
+
20
*
lh
)
/
(
20
*
lh
)
*
(
20
*
lh
)
win
.
setdocsize
(
0
,
height
)
if
autoscroll
:
win
.
show
((
0
,
v
),
(
h
+
tw
,
v
+
lh
))
elif
type
==
WE_MENU
:
menu
,
item
=
detail
if
menu
==
options
:
if
item
==
0
:
autoscroll
=
(
not
autoscroll
)
options
.
check
(
0
,
autoscroll
)
main
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment