1The following are examples of py_flow.d. 2 3This is a simple script to trace the flow of Python functions. 4Here it traces the example program, Code/Python/func_abc.py 5 6# py_flow.d 7 C TIME(us) FILE -- FUNC 8 0 3064371810154 site.py -> ? 9 0 3064371830069 os.py -> ? 10 0 3064371840076 posixpath.py -> ? 11 0 3064371840298 stat.py -> ? 12 0 3064371840319 stat.py <- ? 13 0 3064371840345 posixpath.py <- ? 14 0 3064371840364 os.py -> _get_exports_list 15 0 3064371840510 os.py <- _get_exports_list 16 0 3064371849994 UserDict.py -> ? 17 0 3064371850011 UserDict.py -> UserDict 18 0 3064371850051 UserDict.py <- UserDict 19 0 3064371850067 UserDict.py -> IterableUserDict 20 0 3064371850075 UserDict.py <- IterableUserDict 21 0 3064371850088 UserDict.py -> DictMixin 22 0 3064371850291 UserDict.py <- DictMixin 23 0 3064371850300 UserDict.py <- ? 24 0 3064371850320 os.py -> _Environ 25 0 3064371850330 os.py <- _Environ 26 0 3064371850342 os.py -> __init__ 27 0 3064371850353 UserDict.py -> __init__ 28 0 3064371850363 UserDict.py <- __init__ 29 0 3064371850372 os.py <- __init__ 30 0 3064371850381 os.py -> _exists 31 0 3064371851137 <string> -> ? 32 0 3064371851146 <string> <- ? 33 0 3064371851155 os.py <- _exists 34 0 3064371851162 os.py -> _exists 35 0 3064371851186 <string> -> ? 36 0 3064371851195 <string> <- ? 37 0 3064371851213 os.py <- _exists 38 0 3064371851220 os.py -> _exists 39 0 3064371851242 <string> -> ? 40 0 3064371851249 <string> <- ? 41 0 3064371851257 os.py <- _exists 42 0 3064371851266 os.py -> _exists 43 0 3064371851286 <string> -> ? 44 0 3064371851293 <string> <- ? 45 0 3064371851300 os.py <- _exists 46 0 3064371851310 os.py -> _exists 47 0 3064371851330 <string> -> ? 48 0 3064371851337 <string> <- ? 49 0 3064371851344 os.py <- _exists 50 0 3064371851354 os.py -> _exists 51 0 3064371851374 <string> -> ? 52 0 3064371851381 <string> <- ? 53 0 3064371851388 os.py <- _exists 54 0 3064371851395 os.py -> _exists 55 0 3064371851415 <string> -> ? 56 0 3064371851423 <string> <- ? 57 0 3064371851436 os.py <- _exists 58 0 3064371851445 os.py -> _exists 59 0 3064371851465 <string> -> ? 60 0 3064371851473 <string> <- ? 61 0 3064371851485 os.py <- _exists 62 0 3064371851493 os.py -> _exists 63 0 3064371851514 <string> -> ? 64 0 3064371851522 <string> <- ? 65 0 3064371851534 os.py <- _exists 66 0 3064371851785 copy_reg.py -> ? 67 0 3064371851996 types.py -> ? 68 0 3064371852063 types.py -> _C 69 0 3064371852073 types.py <- _C 70 0 3064371852108 types.py <- ? 71 0 3064371852129 copy_reg.py -> pickle 72 0 3064371852139 copy_reg.py -> constructor 73 0 3064371852147 copy_reg.py <- constructor 74 0 3064371852155 copy_reg.py <- pickle 75 0 3064371852166 copy_reg.py <- ? 76 0 3064371852179 copy_reg.py -> pickle 77 0 3064371852188 copy_reg.py -> constructor 78 0 3064371852196 copy_reg.py <- constructor 79 0 3064371852204 copy_reg.py <- pickle 80 0 3064371852212 copy_reg.py -> pickle 81 0 3064371852221 copy_reg.py -> constructor 82 0 3064371852229 copy_reg.py <- constructor 83 0 3064371852236 copy_reg.py <- pickle 84 0 3064371852244 os.py -> _exists 85 0 3064371852269 <string> -> ? 86 0 3064371852277 <string> <- ? 87 0 3064371852289 os.py <- _exists 88 0 3064371852297 os.py <- ? 89 0 3064371852330 site.py -> _Printer 90 0 3064371852340 site.py <- _Printer 91 0 3064371852376 site.py -> _Helper 92 0 3064371852384 site.py <- _Helper 93 0 3064371852416 site.py -> main 94 0 3064371852423 site.py -> abs__file__ 95 0 3064371852434 posixpath.py -> abspath 96 0 3064371852442 posixpath.py -> isabs 97 0 3064371852452 posixpath.py <- isabs 98 0 3064371852460 posixpath.py -> normpath 99 0 3064371852482 posixpath.py <- normpath 100 0 3064371852490 posixpath.py <- abspath 101 0 3064371852504 posixpath.py -> abspath 102 0 3064371852511 posixpath.py -> isabs 103 0 3064371852520 posixpath.py <- isabs 104 0 3064371852527 posixpath.py -> normpath 105 0 3064371852543 posixpath.py <- normpath 106 0 3064371852552 posixpath.py <- abspath 107 0 3064371852560 posixpath.py -> abspath 108 0 3064371852567 posixpath.py -> isabs 109 0 3064371852576 posixpath.py <- isabs 110 0 3064371852583 posixpath.py -> normpath 111 0 3064371852598 posixpath.py <- normpath 112 0 3064371852607 posixpath.py <- abspath 113 0 3064371852615 posixpath.py -> abspath 114 0 3064371852622 posixpath.py -> isabs 115 0 3064371852631 posixpath.py <- isabs 116 0 3064371852638 posixpath.py -> normpath 117 0 3064371852653 posixpath.py <- normpath 118 0 3064371852661 posixpath.py <- abspath 119 0 3064371852674 posixpath.py -> abspath 120 0 3064371852682 posixpath.py -> isabs 121 0 3064371852690 posixpath.py <- isabs 122 0 3064371852697 posixpath.py -> normpath 123 0 3064371852713 posixpath.py <- normpath 124 0 3064371852721 posixpath.py <- abspath 125 0 3064371852741 posixpath.py -> abspath 126 0 3064371852748 posixpath.py -> isabs 127 0 3064371852757 posixpath.py <- isabs 128 0 3064371852764 posixpath.py -> normpath 129 0 3064371852779 posixpath.py <- normpath 130 0 3064371852787 posixpath.py <- abspath 131 0 3064371852804 posixpath.py -> abspath 132 0 3064371852811 posixpath.py -> isabs 133 0 3064371852819 posixpath.py <- isabs 134 0 3064371852826 posixpath.py -> normpath 135 0 3064371852842 posixpath.py <- normpath 136 0 3064371852850 posixpath.py <- abspath 137 0 3064371852858 posixpath.py -> abspath 138 0 3064371852865 posixpath.py -> isabs 139 0 3064371852874 posixpath.py <- isabs 140 0 3064371852881 posixpath.py -> normpath 141 0 3064371852896 posixpath.py <- normpath 142 0 3064371852904 posixpath.py <- abspath 143 0 3064371852915 site.py <- abs__file__ 144 0 3064371852922 site.py -> removeduppaths 145 0 3064371852931 site.py -> makepath 146 0 3064371852940 posixpath.py -> join 147 0 3064371852948 posixpath.py <- join 148 0 3064371852955 posixpath.py -> abspath 149 0 3064371852963 posixpath.py -> isabs 150 0 3064371852972 posixpath.py <- isabs 151 0 3064371852980 posixpath.py -> normpath 152 0 3064371852995 posixpath.py <- normpath 153 0 3064371853002 posixpath.py <- abspath 154 0 3064371853010 posixpath.py -> normcase 155 0 3064371853018 posixpath.py <- normcase 156 0 3064371853025 site.py <- makepath 157 0 3064371853065 site.py -> makepath 158 0 3064371853073 posixpath.py -> join 159 0 3064371853081 posixpath.py <- join 160 0 3064371853088 posixpath.py -> abspath 161 0 3064371853096 posixpath.py -> isabs 162 0 3064371853104 posixpath.py <- isabs 163 0 3064371853111 posixpath.py -> normpath 164 0 3064371853126 posixpath.py <- normpath 165 0 3064371853134 posixpath.py <- abspath 166 0 3064371853142 posixpath.py -> normcase 167 0 3064371853150 posixpath.py <- normcase 168 0 3064371853157 site.py <- makepath 169 0 3064371853165 site.py -> makepath 170 0 3064371853173 posixpath.py -> join 171 0 3064371853181 posixpath.py <- join 172 0 3064371853188 posixpath.py -> abspath 173 0 3064371853195 posixpath.py -> isabs 174 0 3064371853203 posixpath.py <- isabs 175 0 3064371853210 posixpath.py -> normpath 176 0 3064371853226 posixpath.py <- normpath 177 0 3064371853234 posixpath.py <- abspath 178 0 3064371853241 posixpath.py -> normcase 179 0 3064371853249 posixpath.py <- normcase 180 0 3064371853256 site.py <- makepath 181 0 3064371853265 site.py -> makepath 182 0 3064371853272 posixpath.py -> join 183 0 3064371853280 posixpath.py <- join 184 0 3064371853287 posixpath.py -> abspath 185 0 3064371853294 posixpath.py -> isabs 186 0 3064371853303 posixpath.py <- isabs 187 0 3064371853310 posixpath.py -> normpath 188 0 3064371853325 posixpath.py <- normpath 189 0 3064371853333 posixpath.py <- abspath 190 0 3064371853341 posixpath.py -> normcase 191 0 3064371853348 posixpath.py <- normcase 192 0 3064371853356 site.py <- makepath 193 0 3064371853364 site.py -> makepath 194 0 3064371853372 posixpath.py -> join 195 0 3064371853380 posixpath.py <- join 196 0 3064371853387 posixpath.py -> abspath 197 0 3064371853394 posixpath.py -> isabs 198 0 3064371853402 posixpath.py <- isabs 199 0 3064371853409 posixpath.py -> normpath 200 0 3064371853425 posixpath.py <- normpath 201 0 3064371853433 posixpath.py <- abspath 202 0 3064371853440 posixpath.py -> normcase 203 0 3064371853448 posixpath.py <- normcase 204 0 3064371853455 site.py <- makepath 205 0 3064371853466 site.py <- removeduppaths 206 0 3064371853476 posixpath.py -> basename 207 0 3064371853484 posixpath.py -> split 208 0 3064371853498 posixpath.py <- split 209 0 3064371853505 posixpath.py <- basename 210 0 3064371853513 site.py -> addsitepackages 211 0 3064371853524 posixpath.py -> join 212 0 3064371853538 posixpath.py <- join 213 0 3064371853546 posixpath.py -> join 214 0 3064371853557 posixpath.py <- join 215 0 3064371853566 posixpath.py -> isdir 216 0 3064371853597 stat.py -> S_ISDIR 217 0 3064371853604 stat.py -> S_IFMT 218 0 3064371853612 stat.py <- S_IFMT 219 0 3064371853620 stat.py <- S_ISDIR 220 0 3064371853627 posixpath.py <- isdir 221 0 3064371853636 site.py -> addsitedir 222 0 3064371853643 site.py -> makepath 223 0 3064371853651 posixpath.py -> join 224 0 3064371853659 posixpath.py <- join 225 0 3064371853666 posixpath.py -> abspath 226 0 3064371853674 posixpath.py -> isabs 227 0 3064371853683 posixpath.py <- isabs 228 0 3064371853691 posixpath.py -> normpath 229 0 3064371853707 posixpath.py <- normpath 230 0 3064371853715 posixpath.py <- abspath 231 0 3064371853723 posixpath.py -> normcase 232 0 3064371853730 posixpath.py <- normcase 233 0 3064371853738 site.py <- makepath 234 0 3064371853938 site.py -> addpackage 235 0 3064371853948 posixpath.py -> join 236 0 3064371853958 posixpath.py <- join 237 0 3064371854087 <string> -> ? 238 0 3064371854098 site.py -> addsitedir 239 0 3064371854106 site.py -> _init_pathinfo 240 0 3064371854115 posixpath.py -> isdir 241 0 3064371854195 posixpath.py <- isdir 242 0 3064371854204 posixpath.py -> isdir 243 0 3064371854224 stat.py -> S_ISDIR 244 0 3064371854232 stat.py -> S_IFMT 245 0 3064371854240 stat.py <- S_IFMT 246 0 3064371854247 stat.py <- S_ISDIR 247 0 3064371854254 posixpath.py <- isdir 248 0 3064371854262 site.py -> makepath 249 0 3064371854271 posixpath.py -> join 250 0 3064371854279 posixpath.py <- join 251 0 3064371854286 posixpath.py -> abspath 252 0 3064371854293 posixpath.py -> isabs 253 0 3064371854302 posixpath.py <- isabs 254 0 3064371854309 posixpath.py -> normpath 255 0 3064371854325 posixpath.py <- normpath 256 0 3064371854333 posixpath.py <- abspath 257 0 3064371854341 posixpath.py -> normcase 258 0 3064371854349 posixpath.py <- normcase 259 0 3064371854356 site.py <- makepath 260 0 3064371854364 posixpath.py -> isdir 261 0 3064371854386 stat.py -> S_ISDIR 262 0 3064371854393 stat.py -> S_IFMT 263 0 3064371854400 stat.py <- S_IFMT 264 0 3064371854408 stat.py <- S_ISDIR 265 0 3064371854415 posixpath.py <- isdir 266 0 3064371854423 site.py -> makepath 267 0 3064371854431 posixpath.py -> join 268 0 3064371854438 posixpath.py <- join 269 0 3064371854446 posixpath.py -> abspath 270 0 3064371854453 posixpath.py -> isabs 271 0 3064371854461 posixpath.py <- isabs 272 0 3064371854469 posixpath.py -> normpath 273 0 3064371854485 posixpath.py <- normpath 274 0 3064371854493 posixpath.py <- abspath 275 0 3064371854500 posixpath.py -> normcase 276 0 3064371854508 posixpath.py <- normcase 277 0 3064371854516 site.py <- makepath 278 0 3064371854524 posixpath.py -> isdir 279 0 3064371854556 stat.py -> S_ISDIR 280 0 3064371854563 stat.py -> S_IFMT 281 0 3064371854571 stat.py <- S_IFMT 282 0 3064371854578 stat.py <- S_ISDIR 283 0 3064371854585 posixpath.py <- isdir 284 0 3064371854593 site.py -> makepath 285 0 3064371854601 posixpath.py -> join 286 0 3064371854609 posixpath.py <- join 287 0 3064371854616 posixpath.py -> abspath 288 0 3064371854624 posixpath.py -> isabs 289 0 3064371854632 posixpath.py <- isabs 290 0 3064371854639 posixpath.py -> normpath 291 0 3064371854655 posixpath.py <- normpath 292 0 3064371854663 posixpath.py <- abspath 293 0 3064371854671 posixpath.py -> normcase 294 0 3064371854679 posixpath.py <- normcase 295 0 3064371854686 site.py <- makepath 296 0 3064371854694 posixpath.py -> isdir 297 0 3064371854715 stat.py -> S_ISDIR 298 0 3064371854722 stat.py -> S_IFMT 299 0 3064371854730 stat.py <- S_IFMT 300 0 3064371854737 stat.py <- S_ISDIR 301 0 3064371854744 posixpath.py <- isdir 302 0 3064371854752 site.py -> makepath 303 0 3064371854759 posixpath.py -> join 304 0 3064371854767 posixpath.py <- join 305 0 3064371854774 posixpath.py -> abspath 306 0 3064371854782 posixpath.py -> isabs 307 0 3064371854790 posixpath.py <- isabs 308 0 3064371854797 posixpath.py -> normpath 309 0 3064371854813 posixpath.py <- normpath 310 0 3064371854821 posixpath.py <- abspath 311 0 3064371854829 posixpath.py -> normcase 312 0 3064371854837 posixpath.py <- normcase 313 0 3064371854844 site.py <- makepath 314 0 3064371854852 posixpath.py -> isdir 315 0 3064371854872 stat.py -> S_ISDIR 316 0 3064371854879 stat.py -> S_IFMT 317 0 3064371854887 stat.py <- S_IFMT 318 0 3064371854894 stat.py <- S_ISDIR 319 0 3064371854901 posixpath.py <- isdir 320 0 3064371854909 site.py -> makepath 321 0 3064371854917 posixpath.py -> join 322 0 3064371854925 posixpath.py <- join 323 0 3064371854932 posixpath.py -> abspath 324 0 3064371854939 posixpath.py -> isabs 325 0 3064371854947 posixpath.py <- isabs 326 0 3064371854954 posixpath.py -> normpath 327 0 3064371854970 posixpath.py <- normpath 328 0 3064371854978 posixpath.py <- abspath 329 0 3064371854986 posixpath.py -> normcase 330 0 3064371854994 posixpath.py <- normcase 331 0 3064371855001 site.py <- makepath 332 0 3064371855009 site.py <- _init_pathinfo 333 0 3064371855016 site.py -> makepath 334 0 3064371855024 posixpath.py -> join 335 0 3064371855032 posixpath.py <- join 336 0 3064371855039 posixpath.py -> abspath 337 0 3064371855047 posixpath.py -> isabs 338 0 3064371855055 posixpath.py <- isabs 339 0 3064371855063 posixpath.py -> normpath 340 0 3064371855078 posixpath.py <- normpath 341 0 3064371855086 posixpath.py <- abspath 342 0 3064371855094 posixpath.py -> normcase 343 0 3064371855101 posixpath.py <- normcase 344 0 3064371855144 site.py <- makepath 345 0 3064371855318 site.py -> addpackage 346 0 3064371855327 posixpath.py -> join 347 0 3064371855337 posixpath.py <- join 348 0 3064371855411 site.py -> makepath 349 0 3064371855420 posixpath.py -> join 350 0 3064371855430 posixpath.py <- join 351 0 3064371855437 posixpath.py -> abspath 352 0 3064371855445 posixpath.py -> isabs 353 0 3064371855453 posixpath.py <- isabs 354 0 3064371855460 posixpath.py -> normpath 355 0 3064371855477 posixpath.py <- normpath 356 0 3064371855485 posixpath.py <- abspath 357 0 3064371855493 posixpath.py -> normcase 358 0 3064371855501 posixpath.py <- normcase 359 0 3064371855509 site.py <- makepath 360 0 3064371855517 posixpath.py -> exists 361 0 3064371855542 posixpath.py <- exists 362 0 3064371855591 site.py <- addpackage 363 0 3064371855611 site.py -> addpackage 364 0 3064371855618 posixpath.py -> join 365 0 3064371855628 posixpath.py <- join 366 0 3064371855683 site.py -> makepath 367 0 3064371855692 posixpath.py -> join 368 0 3064371855739 posixpath.py <- join 369 0 3064371855747 posixpath.py -> abspath 370 0 3064371855754 posixpath.py -> isabs 371 0 3064371855763 posixpath.py <- isabs 372 0 3064371855770 posixpath.py -> normpath 373 0 3064371855788 posixpath.py <- normpath 374 0 3064371855796 posixpath.py <- abspath 375 0 3064371855803 posixpath.py -> normcase 376 0 3064371855811 posixpath.py <- normcase 377 0 3064371855818 site.py <- makepath 378 0 3064371855826 posixpath.py -> exists 379 0 3064371855851 posixpath.py <- exists 380 0 3064371855880 site.py <- addpackage 381 0 3064371855892 site.py <- addsitedir 382 0 3064371855900 <string> <- ? 383 0 3064371855915 site.py <- addpackage 384 0 3064371855923 site.py <- addsitedir 385 0 3064371855932 posixpath.py -> isdir 386 0 3064371855965 posixpath.py <- isdir 387 0 3064371855973 site.py <- addsitepackages 388 0 3064371855982 site.py -> setquit 389 0 3064371855993 site.py <- setquit 390 0 3064371856000 site.py -> setcopyright 391 0 3064371856009 site.py -> __init__ 392 0 3064371856019 site.py <- __init__ 393 0 3064371856028 site.py -> __init__ 394 0 3064371856037 site.py <- __init__ 395 0 3064371856045 posixpath.py -> dirname 396 0 3064371856052 posixpath.py -> split 397 0 3064371856065 posixpath.py <- split 398 0 3064371856073 posixpath.py <- dirname 399 0 3064371856085 posixpath.py -> join 400 0 3064371856096 posixpath.py <- join 401 0 3064371856104 site.py -> __init__ 402 0 3064371856113 site.py <- __init__ 403 0 3064371856121 site.py <- setcopyright 404 0 3064371856128 site.py -> sethelper 405 0 3064371856136 site.py <- sethelper 406 0 3064371856143 site.py -> aliasmbcs 407 0 3064371856151 site.py <- aliasmbcs 408 0 3064371856158 site.py -> setencoding 409 0 3064371856166 site.py <- setencoding 410 0 3064371856173 site.py -> execsitecustomize 411 0 3064371871773 site.py <- execsitecustomize 412 0 3064371871794 site.py <- main 413 0 3064371871805 site.py <- ? 414 0 3064371872141 warnings.py -> ? 415 0 306437187232e linecache.py -> ? 416 0 3064371872336 linecache.py <- ? 417 0 3064371872352 warnings.py -> _OptionError 418 0 3064371872361 warnings.py <- _OptionError 419 0 3064371872378 warnings.py -> _processoptions 420 0 3064371872387 warnings.py <- _processoptions 421 0 3064371872397 warnings.py -> simplefilter 422 0 3064371872410 warnings.py <- simplefilter 423 0 3064371872418 warnings.py -> simplefilter 424 0 3064371872428 warnings.py <- simplefilter 425 0 3064371872436 warnings.py <- ? 426 0 3064371886557 __init__.py -> ? 427 0 3064371891761 codecs.py -> ? 428 0 3064371891836 codecs.py -> Codec 429 0 3064371891848 codecs.py <- Codec 430 0 3064371891864 codecs.py -> StreamWriter 431 0 3064371891874 codecs.py <- StreamWriter 432 0 3064371891885 codecs.py -> StreamReader 433 0 3064371891897 codecs.py <- StreamReader 434 0 3064371891907 codecs.py -> StreamReaderWriter 435 0 3064371891918 codecs.py <- StreamReaderWriter 436 0 3064371891926 codecs.py -> StreamRecoder 437 0 3064371891938 codecs.py <- StreamRecoder 438 0 3064371891953 codecs.py <- ? 439 0 3064371902521 aliases.py -> ? 440 0 3064371902580 aliases.py <- ? 441 0 3064371902605 __init__.py -> CodecRegistryError 442 0 3064371902614 __init__.py <- CodecRegistryError 443 0 3064371902636 __init__.py <- ? 444 0 3064371902655 __init__.py -> search_function 445 0 3064371902666 __init__.py -> normalize_encoding 446 0 3064371902682 __init__.py <- normalize_encoding 447 0 3064371902888 ascii.py -> ? 448 0 3064371902900 ascii.py -> Codec 449 0 3064371902909 ascii.py <- Codec 450 0 3064371902922 ascii.py -> StreamWriter 451 0 3064371902930 ascii.py <- StreamWriter 452 0 3064371902941 ascii.py -> StreamReader 453 0 3064371902949 ascii.py <- StreamReader 454 0 3064371902972 ascii.py -> StreamConverter 455 0 3064371902981 ascii.py <- StreamConverter 456 0 3064371902993 ascii.py <- ? 457 0 3064371903009 ascii.py -> getregentry 458 0 3064371903018 ascii.py <- getregentry 459 0 3064371903044 __init__.py <- search_function 460 0 3064371903414 func_abc.py -> ? 461 0 3064371933251 func_abc.py -> func_a 462 0 3064372940696 func_abc.py -> func_b 463 0 3064373950608 func_abc.py -> func_c 464 0 3064374960497 func_abc.py <- func_c 465 0 3064374960512 func_abc.py <- func_b 466 0 3064374960520 func_abc.py <- func_a 467 0 3064374960528 func_abc.py <- ? 468^C 469 470Here we can see that Python has done extensive pre-processing before it runs 471the Code/Python/func_abc.py program itself. 472 473This shows which function is calling which - the output above ends by 474showing that func_a called func_b which in turn called func_c etc. 475 476The TIME(us) column shows time from boot in microseconds. 477 478The FILE column shows the file that was being executed. 479 480If the output looks strange, check the CPU "C" column - if it changes, 481then the output is probably shuffled. See Notes/ALLsnoop_notes.txt for 482details and suggested workarounds. 483 484See Notes/ALLflow_notes.txt for important notes about reading flow outputs. 485 486